const Mock = require("mockjs");
const { deepClone } = require("../utils");
const { asyncRoutes, constantRoutes } = require("./routes.js");

const routes = deepClone([...constantRoutes, ...asyncRoutes]);

const roles = [
  {
    key: "admin",
    name: "admin",
    description: "Super Administrator. Have access to view all pages.",
    routes: routes
  },
  {
    key: "editor",
    name: "editor",
    description: "Normal Editor. Can see all pages except permission page",
    routes: routes.filter(i => i.path !== "/permission")// just a mock
  },
  {
    key: "visitor",
    name: "visitor",
    description: "Just a visitor. Can only see the home page and the document page",
    routes: [{
      path: "",
      redirect: "dashboard",
      children: [
        {
          path: "dashboard",
          name: "Dashboard",
          meta: { title: "dashboard", icon: "dashboard" }
        }
      ]
    }]
  }
];

module.exports = [
  // mock get all routes form server
  {
    url: "/vue-element-admin/routes",
    type: "get",
    response: _ => {
      return {
        code: 2000,
        data: routes
      };
    }
  },

  // mock get all roles form server
  {
    url: "/vue-element-admin/roles",
    type: "get",
    response: _ => {
      return {
        code: 2000,
        data: roles
      };
    }
  },

  // add role
  {
    url: "/vue-element-admin/role",
    type: "post",
    response: {
      code: 2000,
      data: {
        key: Mock.mock("@integer(300, 5000)")
      }
    }
  },

  // update role
  {
    url: "/vue-element-admin/role/[A-Za-z0-9]",
    type: "put",
    response: {
      code: 2000,
      data: {
        status: "success"
      }
    }
  },

  // delete role
  {
    url: "/vue-element-admin/role/[A-Za-z0-9]",
    type: "delete",
    response: {
      code: 2000,
      data: {
        status: "success"
      }
    }
  }
];
